package fwmpc.resource;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 接口描述:  微信基本属性项信息
 * <br />
 * 用于描述微信应用属性资源；Appid、AppSecret、支付账户等信息
 * @author 王雷
 * @version 1.0.0
 * @date 2021/1/19 0019 上午 10:32
 */
public interface IWeiXinAttributeItem extends Serializable {

    /**
     * 功能描述：微信参数——平台标识
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    Long giveAppPlatformId();

    /**
     * 功能描述：微信参数——AppID
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    String giveAppId();

    /**
     * 功能描述：微信参数——AppSecret
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    String giveAppSecret();

    /**
     * 功能描述：微信参数——订单Bode内容
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    String giveOrderBodyValue();

    /**
     * 功能描述：微信参数——退款原因
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    String giveRefundRemarkValue();

    /**
     * 功能描述：微信参数——订单支付等待周期
     * <br />
     * 单位：秒；默认：1分钟
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    Long givePayWaitingCycle();

    /**
     * 功能描述：支付数据描述对象
     *
     * @date : 2022/6/27 0027 下午 3:52
     */
    List<MchDataBean> giveMchDataBeanList();

    /**
     * 功能描述：提前数据描述对象
     *
     * @date : 2022/6/27 0027 下午 3:52
     */
    List<MchDataBean> giveWithdrawMchDataBeanList();

    /**
     * 功能描述：支付数据描述对象
     *
     * @date : 2022/6/27 0027 下午 3:52
     */
    Map<Long, List<MchDataBean>> giveMchDataBeanMap();

    /**
     * 功能描述：提前数据描述对象
     *
     * @date : 2022/6/27 0027 下午 3:52
     */
    Map<Long, List<MchDataBean>> giveWithdrawMchDataBeanMap();

    /**
     * 功能描述：支付回调地址
     *
     * @date : 2022/6/30 0030 下午 3:39
     */
    String givePayCallBackUrl();

    /**
     * 类描述: 支付数据描述对象
     *
     * @author : 王雷
     * @date : 2022/6/27 0027 下午 3:46
     */
    @Data
    @Accessors(chain = true)
    class MchDataBean implements Serializable {

        private static final long serialVersionUID = -1093598002775975369L;

        /**
        * 属性说明: 平台标识
        * @date: 2023-06-21 20:48
        */
        private Long platformKey;
        private Long mchKey;
        /**
         * 属性描述：微信参数——商户号
         *
         * @date : 2021/1/19 0019 上午 11:43
         */
        private String mchId;

        /**
         * 属性描述：微信参数——订单支付密钥
         *
         * @date : 2021/1/22 0022 下午 5:22
         */
        private String payMchSecret;

        /**
         * 属性描述：微信参数——退款SSL证书对应根目录下的路径
         *
         * @date : 2021/1/22 0022 下午 5:22
         */
        private String certificateValue;

        /**
         * 属性描述：微信参数——退款SSL证书对应的密码
         *
         * @date : 2021/1/22 0022 下午 5:22
         */
        private String certificateKeyPsd;

        /**
         * 属性说明: 切换最小值
         *
         * @date: 2023-06-16 16:27
         */
        private BigDecimal handoffMinValue;

        /**
         * 属性说明: 切换最大值
         *
         * @date: 2023-06-16 16:27
         */
        private BigDecimal handoffMaxValue;
    }
}
